package com.fsck.k9.activity.setup; /* * SpinnerHelper donated to K-9 Mail by Boutique Software */ import android.content.Context; import android.widget.ArrayAdapter; import android.widget.Spinner; public class SpinnerHelper { public static void initSpinner(Context context, Spinner spinner, int entryRes, int valueRes, String curVal) { String[] entryArray = context.getResources().getStringArray(entryRes); String[] valueArray = context.getResources().getStringArray(valueRes); initSpinner(context, spinner, entryArray, valueArray, curVal); } public static void initSpinner(Context context, Spinner spinner, String[] entryArray, String[] valueArray, String curVal) { if (entryArray.length != valueArray.length) { throw new RuntimeException("Entry and value arrays are of unequal lenght"); } EntryValue[] entryValues = new EntryValue[entryArray.length]; int curSelection = 0; for (int i = 0; i < entryArray.length; i++) { entryValues[i] = new EntryValue(entryArray[i], valueArray[i]); if (valueArray[i].equals(curVal)) { curSelection = i; } } ArrayAdapter<EntryValue> entryValuesAdapter = new ArrayAdapter<EntryValue>(context, android.R.layout.simple_spinner_item, entryValues); entryValuesAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(entryValuesAdapter); spinner.setSelection(curSelection); } public static String getSpinnerValue(Spinner spinner) { EntryValue entryValue = (EntryValue)spinner.getSelectedItem(); if (entryValue != null) { return entryValue.getValue(); } else { return null; } } public static String getSpinnerEntry(Spinner spinner) { EntryValue entryValue = (EntryValue)spinner.getSelectedItem(); if (entryValue != null) { return entryValue.getEntry(); } else { return null; } } private static class EntryValue { final String entry; final String value; EntryValue(String entry, String value) { this.entry = entry; this.value = value; } @Override public String toString() { return entry; } public String getEntry() { return entry; } public String getValue() { return value; } } }